// 权限控制路由文件
import { isTeacher } from '@/api/login/userLogin';
import Cookies from 'js-cookie';
import router from './index';
// 针对指定路由前缀进行权限控制，其余路由暂时不校验
// 重点关注路由,路由从最开头开始写
const whiteListPatterns = [/^\/login.*/, /^\/$/, /\/user\/homepagesquare/];
const teacherFocusList = ['/teacher'];

router.beforeEach(async (to, from, next) => {
  const isWhiteListed = whiteListPatterns.some(pattern => pattern.test(to.path));
  if (isWhiteListed)
    return next();

  // 检测是否具有token
  const accessToken = Cookies.get('access_token_lf')
  if (accessToken) {
    // 自定义权限控制
    // 教师端路由拦截，只有教师端用户才能访问
    // 利用正则匹配，匹配前缀是否符合要求
    if (teacherFocusList.some(path => to.path.startsWith(path))) {
      // 获取用户信息
      const isTeacherBool = await isTeacher();
      if (isTeacherBool) {
        return next();
      }
      else {
        // 不允许跳转，保持原来页面
        return next(from.path);
      }
    }
    else {
      // 其他路由放行
      return next();
    }
  }
  else {
    // 重定向到登录页
    return next('/login');
  }
});
